// import 'package:amap_flutter_base/amap_flutter_base.dart';
// import 'package:amap_flutter_map/amap_flutter_map.dart';
// import 'package:dio/dio.dart';
// import 'package:flutter/material.dart';
// import 'package:flutter_screenutil/flutter_screenutil.dart';
// import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
// import 'package:lcapp/model/permission/permission_operate.dart';
// import 'package:lcapp/model/toast/toast.dart';
// import 'package:lcapp/page/aMapView/amap_tool.dart';
//
//
// class AmapViewPage extends StatefulWidget {
//   const AmapViewPage({Key key}) : super(key: key);
//
//   @override
//   _AmapViewPageState createState() => _AmapViewPageState();
// }
//
// class _AmapViewPageState extends State<AmapViewPage> {
//
//   static const AMapApiKey amapApiKeys = AMapApiKey(
//     androidKey: '651c4f06a025de31b5b5ce448639f8b4',
//     iosKey: 'f5a80374931dfb6b2997121da1de9d92',
//   );
//
//   /// 地图Controller
//   AMapController _mapController;
//
//   /// 输入框Controller
//   TextEditingController _textController = new TextEditingController();
//
//   /// 输入框FocusNode
//   FocusNode focusNode = new FocusNode();
//
//   /// 搜索地点列表controller
//   ScrollController _scrollController = new ScrollController();
//
//   /// 图标
//   BitmapDescriptor icon;
//
//   /// 标记点
//   Set<Marker> markers = new Set();
//
//   /// tip地址
//   String get tipAdress => '$pName$cName$dName';
//
//   /// city
//   String get tipCity => '$sName';
//
//   /// 搜索结果
//   List searchAddressList = [];
//
//   /// 当前地址ID
//   String currentAddressId;
//
//   /// 区域编码
//   String zoneCode;
//
//   /// 省
//   String pName;
//
//   /// 市
//   String cName;
//
//   /// 区
//   String dName;
//
//   /// 具体位置
//   String sName;
//
//   /// 经纬度
//   String currentCoordinate;
//
//   /// 进入页面默认经度
//   double defaultLon;
//
//   /// 进入页面默认纬度
//   double defaultLat;
//
//   @override
//   void initState() {
//     super.initState();
//     WidgetsBinding.instance.addPostFrameCallback((callback)async {
//       AmapTool.startLocation(isShowToast: true);
//     });
//     defaultLat = double.parse(AmapTool.locationEntity.latitude);
//     defaultLon = double.parse(AmapTool.locationEntity.longitude);
//     getPlace('$defaultLon,$defaultLat');
//     setState(() {});
//   }
//
//   void dispose() {
//     super.dispose();
//     _textController.dispose();
//     _mapController.disponse();
//     _scrollController.dispose();
//   }
//
//   /// 输入内容检索
//   getLocations(String keywords) async {
//     Response res = await Dio().get(
//       'https://restapi.amap.com/v3/place/text?keywords=$keywords&city=$cName&citylimit=$cName&offset=20&page=1&key=df9eba155edb125fc2c4e3a6a91ac4df&extensions=all',
//     );
//     if (res.data['pois'] != null && res.data['pois'].length > 0) {
//       // 默认地图显示第一个搜索结果
//       setState(() {
//         searchAddressList = res.data['pois'];
//         currentAddressId = searchAddressList.first['id'];
//         zoneCode = searchAddressList.first['adcode'];
//         pName = searchAddressList.first['pname'];
//         cName = searchAddressList.first['cityname'];
//         dName = searchAddressList.first['adname'];
//         sName = searchAddressList.first['name'];
//         LatLng _dio = LatLng(
//           double.parse(searchAddressList.first['location'].split(',')[1]),
//           double.parse(searchAddressList.first['location'].split(',').first),
//         );
//         moveToCenterLocation(_dio);
//       });
//     }
//   }
//
//   /// 地理解析
//   getPlace(String coondinate, {bool isChooseIndex = true}) async {
//     print('coondinate======' + coondinate);
//     Response res = await Dio().get(
//       'https://restapi.amap.com/v3/geocode/regeo?location=$coondinate&key=df9eba155edb125fc2c4e3a6a91ac4df&extensions=all',
//     );
//     searchAddressList = res.data["regeocode"]["pois"];
//     if (isChooseIndex) {
//       pName = res.data['regeocode']['addressComponent']['province'];
//       // 直辖市没有这个字段
//       if (res.data['regeocode']['addressComponent']['city'] is List) {
//         cName = pName;
//       } else {
//         cName = res.data['regeocode']['addressComponent']['city'];
//       }
//       dName = res.data['regeocode']['addressComponent']['district'];
//       zoneCode = res.data['regeocode']['addressComponent']['adcode'];
//       sName = searchAddressList.first['name'];
//       currentAddressId = searchAddressList.first['id'];
//     }
//     print('地址解析=========' + coondinate +'-------'+ pName +cName + dName);
//     print('地址解析=========' + sName);
//     setState(() {});
//   }
//
//   /// 将指定地点显示在地图中间
//   void moveToCenterLocation(LatLng location) {
//     currentCoordinate = "${location.longitude},${location.latitude}";
//     CameraUpdate cameraUpdate = CameraUpdate.newCameraPosition(
//       CameraPosition(
//         target: location,
//         zoom: 15,
//       ),
//     );
//     _mapController.moveCamera(cameraUpdate, animated: true);
//   }
//
//   /// 滚动到顶部
//   // void scrollToTop() {
//   //   _scrollController.animateTo(
//   //     0.0,
//   //     duration: Duration(milliseconds: 500),
//   //     curve: Curves.easeIn,
//   //   );
//   // }
//
//   /// 键盘收起
//   void expandedKeyboard() {
//     FocusScopeNode currentFocus = FocusScope.of(context);
//
//     /// 键盘是否是弹起状态
//     if (!currentFocus.hasPrimaryFocus && currentFocus.focusedChild != null) {
//       Future.delayed(Duration(milliseconds: 200), () {
//         FocusManager.instance.primaryFocus.unfocus();
//       });
//     }
//   }
//
//   /// 保存用户信息
//   void saveUserLocation() async {
//     print(
//         'coordinate==$currentCoordinate====zoneCode====$zoneCode===locationName==== $pName $cName $dName $sName');
//     Navigator.of(context).pop({
//       'coordinate':currentCoordinate,
//       'zoneCode':zoneCode,
//       'locationName':sName
//     });
//   }
//
//   @override
//   Widget build(BuildContext context) {
//     final AMapWidget map = AMapWidget(
//       apiKey: amapApiKeys,
//       initialCameraPosition: CameraPosition(
//         target: LatLng(defaultLat, defaultLon),
//         zoom: 15,
//       ),
//       myLocationStyleOptions: MyLocationStyleOptions(
//         true, // 是否显示我自己的位置
//       ),
//       onMapCreated: (controller) {
//         setState(() {
//           _mapController = controller;
//         });
//       },
//       onCameraMoveEnd: (location) async {
//         // 如果用户不是输入状态而且输入框有值
//         // if (!focusNode.hasFocus) {
//         //   if (_textController.text.isNotEmpty) {
//         //     _textController.text = "";
//         //   }
//         //   currentCoordinate =
//         //       "${location.target.longitude},${location.target.latitude}";
//         //   getPlace(currentCoordinate, isChooseIndex: true);
//         // }
//       },
//       onTap: (location) async {
//         // if (!focusNode.hasFocus) {
//         //   if (_textController.text.isNotEmpty) {
//         //     _textController.text = "";
//         //   }
//         //   moveToCenterLocation(location);
//         // }
//       },
//       markers: markers,
//     );
//     return Scaffold(
//       backgroundColor: Colors.white,
//       body: Stack(
//         children: [
//           /// 地图
//           Container(
//             width: 1.sw,
//             height: 1.sh,
//             child: map,
//           ),
//
//           /// 阴影
//           Container(
//             width: 1.sw,
//             height: 178.w,
//             decoration: BoxDecoration(
//               gradient: LinearGradient(
//                 colors: [
//                   Color(0xAB515151),
//                   Color(0x00111111),
//                 ],
//                 begin: Alignment.topCenter,
//                 end: Alignment.bottomCenter,
//               ),
//             ),
//           ),
//
//           /// 取消
//           Positioned(
//             left: 30.w,
//             top: 90.w,
//             child: GestureDetector(
//               onTap: () {
//                 Navigator.of(context).pop();
//               },
//               child: Container(
//                 alignment: Alignment.center,
//                 child: Text(
//                   '取消',
//                   style: TextStyle(
//                     color: Colors.white,
//                     fontSize: 32.sp,
//                     fontWeight: FontWeight.w500,
//                   ),
//                 ),
//                 height: 66.w,
//               ),
//             ),
//           ),
//
//           /// 确认
//           Positioned(
//             right: 30.w,
//             top: 90.w,
//             child: GestureDetector(
//               onTap: () {
//                 saveUserLocation();
//               },
//               child: Container(
//                 alignment: Alignment.center,
//                 child: Text(
//                   '确认',
//                   style: TextStyle(
//                     color: Color(0xff1A1A1A),
//                     fontSize: 32.sp,
//                     fontWeight: FontWeight.w500,
//                   ),
//                 ),
//                 width: 120.w,
//                 height: 66.w,
//                 decoration: BoxDecoration(
//                   color: Color(0xffFED420),
//                   borderRadius: BorderRadius.circular(66.w),
//                 ),
//               ),
//             ),
//           ),
//
//           /// 中心标记点
//           Positioned(
//             top: 0.5.sh - 40.w,
//             left: 0.5.sw - 25.w,
//             child: Container(
//               width: 50.w,
//               // height: 60.w,
//               child: Image.asset('assets/map/icon_location.png'),
//             ),
//           ),
//
//           /// 浮窗
//           Positioned(
//             top: 0.42.sh,
//             left: 0.5.sw - 150.w,
//             child: Visibility(
//               visible: tipCity.isNotEmpty && tipAdress.isNotEmpty,
//               child: Container(
//                 width: 300.w,
//                 height: 80.w,
//                 padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 4.w),
//                 decoration: BoxDecoration(
//                   color: Colors.white,
//                   borderRadius: BorderRadius.all(Radius.circular(8.w)),
//                   boxShadow: [
//                     BoxShadow(
//                       color: Colors.black.withOpacity(0.1),
//                       blurRadius: 10,
//                     ),
//                   ],
//                 ),
//                 child: Column(
//                   mainAxisAlignment: MainAxisAlignment.spaceAround,
//                   crossAxisAlignment: CrossAxisAlignment.start,
//                   children: [
//                     Text(
//                       '$tipCity',
//                       style: TextStyle(
//                         fontSize: 24.sp,
//                         fontWeight: FontWeight.bold,
//                         overflow: TextOverflow.ellipsis,
//                       ),
//                     ),
//                     // Text(
//                     //   '$tipAdress',
//                     //   style: TextStyle(
//                     //     fontSize: 20.sp,
//                     //     fontWeight: FontWeight.bold,
//                     //     color: Color(0xFF333333),
//                     //     overflow: TextOverflow.ellipsis,
//                     //   ),
//                     // ),
//                   ],
//                 ),
//               ),
//             ),
//           ),
//
//           /// 我的位置
//           Positioned(
//             top: 0.52.sh,
//             right: 30.w,
//             child: GestureDetector(
//               onTap: () {
//                 getLocationPermission(
//                   context,
//                   () {
//                     _textController.clear();
//                     LatLng _dio = LatLng(
//                       double.parse(AmapTool.locationEntity.latitude),
//                       double.parse(AmapTool.locationEntity.longitude),
//                     );
//                     moveToCenterLocation(_dio);
//                   },
//                   isShowToast: false,
//                   errorCallBack: () {
//                     SmartDialog.show(
//                       alignmentTemp: Alignment.center,
//                       clickBgDismissTemp: true,
//                       maskColorTemp: Color.fromRGBO(0, 0, 0, 0.75),
//                       widget: buildLocationPopup(),
//                     );
//                   },
//                 );
//               },
//               child: Container(
//                 width: 86.w,
//                 child: Image.asset('assets/map/icon_mylocation.png'),
//               ),
//             ),
//           ),
//
//           /// 搜索框
//           Positioned(
//             bottom: 0,
//             left: 0,
//             right: 0,
//             child: Container(
//               width: 1.sw,
//               height: searchAddressList.isEmpty
//                   ? 140.w + MediaQuery.of(context).padding.bottom
//                   : 0.4.sh,
//               padding: EdgeInsets.only(
//                 left: 30.w,
//                 right: 30.w,
//                 bottom: MediaQuery.of(context).padding.bottom,
//               ),
//               color: Colors.white,
//               child: Column(
//                 children: [
//                   Container(
//                     height: 78.w,
//                     padding: EdgeInsets.only(left: 30.w, right: 30.w),
//                     margin: EdgeInsets.only(top: 20.w,bottom: 20.w),
//                     decoration: BoxDecoration(
//                       color: Color(0xFFF5F5F5),
//                       borderRadius: BorderRadius.all(Radius.circular(78.w)),
//                     ),
//                     child: Row(
//                       crossAxisAlignment: CrossAxisAlignment.center,
//                       children: [
//                         Image.asset(
//                           "assets/map/search_default.png",
//                           height: 30.w,
//                           fit: BoxFit.fitWidth,
//                         ),
//                         SizedBox(
//                           width: 18.w,
//                         ),
//                         Expanded(
//                           child: TextField(
//                             controller: _textController,
//                             style: TextStyle(
//                               fontSize: 26.sp,
//                               color: Color(
//                                 0xff333333,
//                               ),
//                               fontWeight: FontWeight.w500,
//                             ),
//                             keyboardType: TextInputType.multiline,
//                             focusNode: focusNode,
//                             textInputAction: TextInputAction.done,
//                             maxLines: 1,
//                             minLines: 1,
//                             maxLength: 20,
//                             // cursorHeight: 1.0,
//                             textAlign: TextAlign.start,
//                             decoration: InputDecoration(
//                               contentPadding: EdgeInsets.all(0),
//                               hintText: "请输入地点名称",
//                               hintStyle: TextStyle(
//                                 color: Color(0xffB3B3B3),
//                                 height: 1.8,
//                               ),
//                               counterText: "",
//                               border: OutlineInputBorder(
//                                 borderSide: BorderSide.none,
//                               ),
//                             ),
//                             onChanged: (controllerText) {
//                               if (controllerText.isNotEmpty) {
//                                 getLocations(controllerText);
//                                 // scrollToTop();
//                               }
//                             },
//                           ),
//                         ),
//                         GestureDetector(
//                           onTap: () {
//                             setState(() {
//                               _textController.text = "";
//                               focusNode.unfocus();
//                             });
//                           },
//                           child: Container(
//                             width: 36.w,
//                             height: 36.w,
//                             decoration: BoxDecoration(
//                               borderRadius: BorderRadius.circular(9),
//                             ),
//                             child: Image.asset(
//                               'assets/map/icon_close.png',
//                               width: 36.w,
//                             ),
//                           ),
//                         ),
//                       ],
//                     ),
//                   ),
//                   Expanded(
//                     child: GestureDetector(
//                       behavior: HitTestBehavior.translucent,
//                       // onTap: () => expandedKeyboard(),
//                       onPanDown: (_) => expandedKeyboard(),
//                       child: SingleChildScrollView(
//                         controller: _scrollController,
//                         child: Column(
//                           children: searchAddressList
//                               .map((e) => buildAddressItem(e))
//                               .toList(),
//                         ),
//                       ),
//                     ),
//                   ),
//                 ],
//               ),
//             ),
//           ),
//         ],
//       ),
//     );
//   }
//
//   /// 构建地址检索结果
//   Widget buildAddressItem(Map address) {
//     return GestureDetector(
//       onTap: () {
//         setState(() {
//           currentAddressId = address['id'];
//           // if (_textController.text.isNotEmpty) {
//             zoneCode = address['adcode'];
//             pName = address['pname'];
//             cName = address['cityname'];
//             dName = address['adname'];
//             sName = address['name'];
//           // }
//           LatLng _dio = LatLng(
//             double.parse(address['location'].split(',')[1]),
//             double.parse(address['location'].split(',').first),
//           );
//           moveToCenterLocation(_dio);
//           if (_textController.text.isEmpty) {
//             // scrollToTop();
//           }
//         });
//       },
//       child: Container(
//         width: 1.sw,
//         padding: EdgeInsets.symmetric(horizontal: 30.w, vertical: 20.w),
//         color: Colors.white,
//         child: Row(
//           children: [
//             Expanded(
//               child: Column(
//                 mainAxisAlignment: MainAxisAlignment.spaceBetween,
//                 crossAxisAlignment: CrossAxisAlignment.start,
//                 children: [
//                   Text(
//                     '${address['name']}',
//                     style: TextStyle(
//                       fontSize: 28.sp,
//                       color: Color(0xFF333333),
//                       fontWeight: FontWeight.bold,
//                       overflow: TextOverflow.ellipsis,
//                     ),
//                   ),
//                   SizedBox(height: 10.w),
//                   Text(
//                     '${(address['district'] == null || address['district'].length == 0) ? '' : address['district']}${address['address'].length == 0 ? '' : address['address']}',
//                     style: TextStyle(
//                       fontSize: 22.sp,
//                       color: Color(0xFF999999),
//                       overflow: TextOverflow.ellipsis,
//                     ),
//                   ),
//                 ],
//               ),
//             ),
//             Container(
//               width: 50.w,
//               margin: EdgeInsets.only(left: 20.w, right: 10.w),
//               child: Visibility(
//                 visible: currentAddressId == address['id'],
//                 child: Image.asset(
//                   'assets/map/select_address.png',
//                   height: 48.w,
//                 ),
//               ),
//             ),
//           ],
//         ),
//       ),
//     );
//   }
//
//   /// 未开启权限弹窗
//   Widget buildLocationPopup() {
//     return Container(
//       width: 520.w,
//       height: 366.w,
//       decoration: BoxDecoration(
//         color: Colors.white,
//         borderRadius: BorderRadius.all(Radius.circular(8)),
//       ),
//       child: Column(
//         children: [
//           Container(
//             margin: EdgeInsets.only(top: 60.w, bottom: 28.w),
//             child: Text(
//               '提示',
//               style: TextStyle(
//                 color: Color(0xFF000000),
//                 fontSize: 34.sp,
//                 fontWeight: FontWeight.w500,
//               ),
//             ),
//           ),
//           Expanded(
//             child: Container(
//               padding: EdgeInsets.symmetric(horizontal: 40.w),
//               decoration: BoxDecoration(
//                 border: Border(
//                   bottom: BorderSide(
//                     color: Color(0xFFC5C5C5),
//                     width: 1.w,
//                   ),
//                 ),
//               ),
//               child: Text(
//                 '当前获取不到您的位置，请在设置页面打开GPS和无线网络',
//                 style: TextStyle(
//                   color: Color(0xFF333333),
//                   fontSize: 28.sp,
//                   fontWeight: FontWeight.w400,
//                 ),
//                 textAlign: TextAlign.center,
//               ),
//             ),
//           ),
//           Container(
//             width: double.infinity,
//             height: 100.w,
//             child: Row(
//               children: [
//                 GestureDetector(
//                   onTap: () => SmartDialog.dismiss(),
//                   child: Container(
//                     width: 259.w,
//                     alignment: Alignment.center,
//                     decoration: BoxDecoration(
//                       border: Border(
//                         right: BorderSide(
//                           color: Color(0xFFC5C5C5),
//                           width: 1.w,
//                         ),
//                       ),
//                     ),
//                     child: Text(
//                       '取消',
//                       style: TextStyle(
//                         color: Color(0xFF666666),
//                       ),
//                     ),
//                   ),
//                 ),
//               ],
//             ),
//           ),
//         ],
//       ),
//     );
//   }
// }
